The architecture used by large-scale web applications is ill-suited to serve clients in need of long-lived persistent connections. Traditionally, web content has been delivered via short-lived, discrete connections initiated exclusively by the client device. For real-time applications in which the client monitors web service data for changes over time, the industry standard has been to require the client to poll the web service intermittently. With the introduction of persistent connections in the browser (i.e., Web Sockets), data transmission can occur in real time, with changes communicated (i.e., pushed) by the web server to the client as they occur, rather than through polling on the client side. A push-based model significantly reduces the amount of data transmitted between client and web server, but it also requires that the web server know when changes occur in the data it is serving to the client. Large-scale web applications make this difficult because—for scale and availability—data is typically kept on database servers separate from the web servers with which the client interacts directly. Hence, when a request is made by a client device to a web server, the web server must similarly poll a database for the data required to respond to the client.